<?php

namespace Regard\AdminBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Symfony\Component\Security\Core\Exception\BadCredentialsException;

class AdminController extends Controller
{
    public function loginAction()
    {
        // Si le visiteur est déjà identifié, on le redirige vers l'accueil
        if ($this->get('security.context')->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
          return $this->redirect($this->generateUrl('_welcome'));
        }

        $request = $this->getRequest();
        $session = $request->getSession();

        try {
            // On vérifie s'il y a des erreurs d'une précédente soumission du formulaire
            if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
              $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
            } else {
              $error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
              $session->remove(SecurityContext::AUTHENTICATION_ERROR);
            }
        } catch (BadCredentialsException $e) {
            $error = $e;
        }

        return $this->render('RegardAdminBundle:Admin:login.html.twig', array(
          // Valeur du précédent nom d'utilisateur entré par l'internaute
          'last_username' => $session->get(SecurityContext::LAST_USERNAME),
          'error'         => $error,
        ));
    }
}
